package com.itheima.putige.putige.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class EmailUtils {
    @Autowired
    JavaMailSender javaMailSender;
    @Value("${reggie.email}")
    private String email;
    @Value("${reggie.weburl}")
    private String weburl;
    @Value("${spring.mail.username}")
    private String localEmail;
    /**
     *
     * @param toEmail   收件人
     * @param code      验证码
     */
    public void sendCodeEmail(String toEmail, String code){
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("来自"+weburl+"的信息");
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom(localEmail);
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("cn_zcscloud@163.com","12****32*qq.com");
        message.setTo(toEmail);
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText("您的登录验证码为:"+code+",如果不是本人操作请忽略此条消息,不要告知他人.");
        // 发送邮件
        javaMailSender.send(message);
    }

    /**
     * 群发
     * @param toEmails
     * @param msg
     */
    public void sendEmail(String[] toEmails, String msg){
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("来自"+weburl+"的信息");
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom(localEmail);
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("cn_zcscloud@163.com","12****32*qq.com");
        message.setTo(toEmails);
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText(msg);
        // 发送邮件
        javaMailSender.send(message);
    }

    /**
     *
     * @param toEmail 收件人
     * @param msg   信息
     * @param typeInfo  邮件主题
     */
    public void sendEmail(String toEmail, String msg, String typeInfo){
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject(typeInfo);
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom(localEmail);
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("cn_zcscloud@163.com","12****32*qq.com");
        message.setTo(toEmail);
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText(msg);
        // 发送邮件
        javaMailSender.send(message);
    }

    public void sendErrorEmail(String msg){
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("来自"+weburl+"的信息");
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom(localEmail);
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("cn_zcscloud@163.com","12****32*qq.com");
        message.setTo(email);

        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText("服务器发生错误:"+msg);
        // 发送邮件
        javaMailSender.send(message);
    }
}
